##################################################################################################################################################################################################################
# Description: Clustering data using the matrix of data. Program created to run in Parallel environment
#      Author: Yandi Naranjo Basalo (PhD. Research)
# Institution: Group RMN (Miquel Pons Laboratory) - IRB Barcelona
# Last Change: 10-08-2011
#     Project: MatrixCluster
##################################################################################################################################################################################################################
#  Compiler
##################################################################################################################################################################################################################
MPI          = mpic++
GCC          = g++
##################################################################################################################################################################################################################
#  Get the list of PDB files of complexes
##################################################################################################################################################################################################################

OBJECT       = APCluster.o AncestorMol.o ClusteringTask.o IdxCluster.o ListAncestorMol.o ListClusteringTask.o ListE.o ListRankStatus.o MatrixTool.o Node.o RankStatus.o Strings.o parallel_exec_Matrix.o

APCluster.o: APCluster.cpp
	$(GCC) -c APCluster.cpp

AncestorMol.o: AncestorMol.cpp ListE.o Strings.o libraries.h
	$(GCC) -c AncestorMol.cpp

IdxCluster.o: IdxCluster.cpp
	$(GCC) -c IdxCluster.cpp

ClusteringTask.o: ClusteringTask.cpp
	$(GCC) -c ClusteringTask.cpp

ListAncestorMol.o: ListAncestorMol.cpp AncestorMol.o ListE.o Strings.o libraries.h
	$(GCC) -c ListAncestorMol.cpp -lz -lm

ListClusteringTask.o: ListClusteringTask.cpp ListE.o Strings.o ListRankStatus.o MatrixTool.o libraries.h
	$(GCC) -c ListClusteringTask.cpp

ListE.o: ListE.cpp Node.o
	$(GCC) -c ListE.cpp

ListRankStatus.o: ListRankStatus.cpp RankStatus.o ListE.o libraries.h
	$(GCC) -c ListRankStatus.cpp

MatrixTool.o: MatrixTool.cpp ListE.o Strings.o libraries.h
	$(GCC) -c MatrixTool.cpp

Node.o: Node.cpp
	$(GCC) -c Node.cpp

RankStatus.o: RankStatus.cpp
	$(GCC) -c RankStatus.cpp

Strings.o: Strings.cpp
	$(GCC) -c Strings.cpp
	
parallel_exec_Matrix.o: parallel_exec_Matrix.cpp ListClusteringTask.o IdxCluster.o	
	$(MPI) -c parallel_exec_Matrix.cpp

##################################################################################################################################################################################################################
# All
##################################################################################################################################################################################################################

all: $(OBJECT)

	$(MPI) $(OBJECT) -o ClusteringMatrix -lz

##################################################################################################################################################################################################################

clean:
	rm ClusteringMatrix *.o

##################################################################################################################################################################################################################
# End
##################################################################################################################################################################################################################
